package com.hsnn.medstgmini.pro.base.service.Impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.base.std.model.form.StdCompInfoForm;
import com.hsnn.medstgmini.pro.base.dao.BaseDelrelationByCentreDao;
import com.hsnn.medstgmini.pro.base.dao.BaseGoodsDao;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelation;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelationByCentre;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelationByCentreGoodsDrug;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelationLog;
import com.hsnn.medstgmini.pro.base.model.BaseGoods;
import com.hsnn.medstgmini.pro.base.service.BaseDelrelationByCentreManager;
import com.hsnn.medstgmini.util.ConstantsUtil;
import com.hsnn.medstgmini.util.DicSysUtil;
import com.hsnn.medstgmini.util.Pagination;

@Service("baseDelrelationByCentreManager")
public class BaseDelrelationByCentreManagerImpl implements BaseDelrelationByCentreManager {
	
	@Autowired
	private BaseDelrelationByCentreDao baseDelrelationByCentreDao;

	@Transactional
	public void confirmDel(Pagination page) {
		baseDelrelationByCentreDao.confirmDel(page);
	}

	@Autowired
	private BaseGoodsDao baseGoodsDao;
	
	
	/**
	 * 
	 *@category  中心端配送关系管理明细列表
	 *@author 言科
	 *@date 2015年6月26日
	 *Pagination
	 */
	@SuppressWarnings("unchecked")
	public Pagination getBaseDelByCentreListSee(Pagination page) {
		page = baseDelrelationByCentreDao.getBaseDelByCentreListSee(page);
		page.setRows(formateDelCentre((List<Object[]>) page.getRows()));
		return page;
	}
	
	//封装商品信息
	private List<BaseGoods> formateDelCentre(List<Object[]> list) {
		List<BaseGoods> flist = new ArrayList<BaseGoods>();
		if (null != list && list.size() > 0){
			for (int i = 0; i < list.size(); i++){
				Object[] obj = list.get(i);
				BaseGoods form = new BaseGoods();
				form.setDelRelId(obj[0]==null?"":obj[0].toString());
				form.setGoodsCode(obj[1]==null?"":obj[1].toString());
				form.setDrugCode(obj[2]==null?"":obj[2].toString());
				form.setDrugName(obj[3]==null?"":obj[3].toString());
				form.setFormName(obj[4]==null?"":obj[4].toString());
				form.setSpecName(obj[5]==null?"":obj[5].toString());
				form.setFactor(obj[6]==null?"":obj[6].toString());
				form.setUnit(obj[7]==null?"":obj[7].toString());
				form.setMaterialName(obj[8]==null?"":obj[8].toString());
				form.setDrugSource(DicSysUtil.getValueByClassCodeAndDicCode(Constants.DRUG_SOURCE, obj[9]==null?"":obj[9].toString()));
				form.setDrugCatText(obj[10] == null ? "" : DicSysUtil.getValueByClassCodeAndDicCode(Constants.DRUG_CAT, obj[10].toString()));
				form.setProjectName(obj[11]==null?"":obj[11].toString());
				flist.add(form);
			}
		}
		return flist;
	}

	
	/**
	 * 
	 *@category  中心端配送关系管理 设置配送关系列表
	 *@author 言科
	 *@date 2015年6月26日
	 *Pagination
	 */
	@SuppressWarnings("unchecked")
	public Pagination getBaseDelByCentreListManage(Pagination page) {
		page = baseDelrelationByCentreDao.getBaseDelByCentreListManage(page);
		page.setRows(formateDelCentreManage((List<Object[]>) page.getRows()));
		return page;
	}

	//封装配送企业及区域信息
	private List<StdCompInfoForm> formateDelCentreManage(List<Object[]> list){
		List<StdCompInfoForm> flist = new ArrayList<StdCompInfoForm>();
		if (null != list && list.size() > 0){
			for (int i = 0; i < list.size(); i++){
				StdCompInfoForm data = new StdCompInfoForm();
				Object[] obj = list.get(i);
				data.setCompId(obj[0]==null?"":obj[0].toString());
				data.setCompCode(obj[1]==null?"":obj[1].toString());
				data.setCompName(obj[2]==null?"":obj[2].toString());
				data.setAreaId(obj[3]==null?"":obj[3].toString());
				data.setCompRegId(obj[4]==null?"":obj[4].toString());
				data.setOrgCode(obj[5]==null?"":obj[5].toString());
				flist.add(data);
			}
		}
		return flist;
	}

	
	/**
	 * 
	 *@category  中心端配送关系管理 设置配送关系列表  根据区域设置配送企业
	 *@author 言科
	 * @return 
	 *@date 2015年6月26日
	 *Pagination
	 */
	@Transactional
	public String setDelByArea(List<StdCompInfoForm> list) {
		return baseDelrelationByCentreDao.setDelByArea(list);
	}
	
	
	/**
	 * 
	 *@category 根据id查询
	 *@author 言科
	 *@date 2015年6月24日
	 *BaseDelrelationByCentre
	 */
	public BaseDelrelationByCentre getBaseDelrelationByCentreById(String goodsCode) {
		return baseDelrelationByCentreDao.getBaseDelrelationByCentreById(goodsCode);
	}

	/**
	 * 
	 *@category  中心端配送关系 状态变换
	 *@author 言科
	 *@date 2015年6月20日
	 *Pagination
	 */
	public void switchStatus(String goodsCode, Short status) {
		baseDelrelationByCentreDao.switchStatus(goodsCode, status);
		
	}

	/**
	 * 
	 *@category  配送关系设置日志查询
	 *@author 言科
	 *@date 2015年6月24日
	 *List<BaseDelrelationLog>
	 */
	public List<BaseDelrelationLog> getBaseDelrelationByCentreListLog(Pagination page, BaseDelrelationLog baseDelrelationLog) {
		return baseDelrelationByCentreDao.getBaseDelrelationByCentreListLog(page, baseDelrelationLog);
	}

	/**
	 * 
	 *@category  中心端配送关系根据商品码查询商品价格明细
	 *@author 言科
	 *@date 2015年6月20日
	 *Pagination
	 */
	@SuppressWarnings("unchecked")
	public Pagination getBaseDelByCentreGoods(Pagination page) {
		page = baseDelrelationByCentreDao.getBaseDelByCentreGoods(page);
		page.setRows(formateDelCentreGoods((List<Object[]>) page.getRows()));
		return page;
	}

	private List<BaseGoods> formateDelCentreGoods(List<Object[]> list) {
		List<BaseGoods> flist = new ArrayList<BaseGoods>();
		if (null != list && list.size() > 0){
			for (int i = 0; i < list.size(); i++){
				Object[] obj = list.get(i);
				BaseGoods data = new BaseGoods();
				data.setDelRelId(obj[0]==null?"":obj[0].toString());
				data.setGoodsCode(obj[1]==null?"":obj[1].toString());
				data.setDrugCode(obj[2]==null?"":obj[2].toString());
				data.setDrugName(obj[3]==null?"":obj[3].toString());
				data.setFormName(obj[4]==null?"":obj[4].toString());
				data.setSpecName(obj[5]==null?"":obj[5].toString());
				data.setFactor(obj[6]==null?"":obj[6].toString());
				data.setUnit(obj[7]==null?"":obj[7].toString());
				data.setProPriceLimitText(obj[8]==null?"":obj[8].toString());
				data.setRetailPriceLimitText(obj[9]==null?"":obj[9].toString());
				data.setDrugId(obj[10]==null?"":obj[10].toString());
				flist.add(data);
			}
		}
		return flist;
	}

	
	/**
	 * 
	 *@category  查询所有药品和配送企业关系
	 *@author 言科
	 *@date 2015年6月26日
	 *void
	 */
	public Pagination getBaseDelByCompList(Pagination page) {
		page = baseGoodsDao.getBaseDelByCompList(page);
		page.setRows(formateDelCentre((List<Object[]>) page.getRows()));
		return page;
	}



	

	

}
